import { defineStore } from "pinia";
import { AuthState } from "@/stores/interface";
import { getFlatMenuList, getShowMenuList, getAllBreadcrumbList } from "@/utils";
import {getAuthApi}from '@/api/modules/login'

// 权限单独每次跳转页面发请求直接获取并处理（安全性）
export const useAuthStore = defineStore({
  id: "geeker-auth",
  state: (): AuthState => ({
    // 按钮权限列表
    authButtonList:[],
    // 菜单权限列表
    authMenuList: [],
    // 当前页面的 router name，用来做按钮权限筛选,当每个页面给的权限不一样才用到此属性
    routeName: ""
  }),
  //getters返回值也要要求是响应式的
  getters: {
    // 按钮权限列表
    authButtonListGet: state => state.authButtonList,
    // 菜单权限列表 ==> 这里的菜单没有经过任何处理
    authMenuListGet: state => state.authMenuList,
    // 菜单权限列表 ==> 左侧菜单栏渲染，需要剔除 isHide == true
    showMenuListGet: state => getShowMenuList(state.authMenuList),
    // 菜单权限列表 ==> 扁平化之后的一维数组菜单，主要用来添加动态路由
    flatMenuListGet: state => getFlatMenuList(state.authMenuList),
    // 递归处理后的所有面包屑导航列表
    breadcrumbListGet: state => getAllBreadcrumbList(state.authMenuList)
  },
  actions: {
    // 获取权限信息
    async getAuthData() {
      const { data } = await getAuthApi();
      this.authButtonList = data.authButtonList;
      this.authMenuList = data.authMenuList;
    },
    // // Get AuthButtonList
    // async getAuthButtonList() {
    //   // const { data } = await getAuthButtonListApi();
    //   // this.authButtonList = data;
    // },
    // // Get AuthMenuList
    // async getAuthMenuList() {
    //   // const { data } = await getAuthMenuListApi();
    //   // this.authMenuList = data;
    // },
    // Set RouteName
    async setRouteName(name: string) {
      this.routeName = name;
    }
  }
});
